#ifndef VISGRABGRASPTASK_HPP_
#define VISGRABGRASPTASK_HPP_

#include <rw/common/Ptr.hpp>
#include <rwlibs/task/Task.hpp>
#include <rwlibs/task/GraspTask.hpp>
#include <rw/common/PropertyMap.hpp>
/**
 * @brief a container for describing one or multiple grasping tasks. It is based on the rwlibs::tasks library
 *
 * Definition of VisGraBGraspTask xml format
 *
 */

class VisGraBGraspTask: public rwlibs::task::GraspTask {
public:
    typedef rw::common::Ptr<VisGraBGraspTask> Ptr;

    VisGraBGraspTask():rwlibs::task::GraspTask(){}

    VisGraBGraspTask(rwlibs::task::CartesianTask::Ptr task):rwlibs::task::GraspTask(task){}

    rw::common::PropertyMap& getPropertyMap(){ return _pmap;};

    static void saveVisGraBResult(VisGraBGraspTask::Ptr task, const std::string& name );

    static std::vector<VisGraBGraspTask::Ptr> load(const std::string& name);
private:
    rw::common::PropertyMap _pmap;
};

#endif /* GRASPTASK_HPP_ */
